package ar.edu.utn.frsf.died2013.tp1;


/**
 * 
 * Clase Abstracta que representa los datos Genericos de una persona, independientemente de su Rol.
 * Los metodos Abstractos son implementados en la clase Cliente.
 * 
 * @author Balestra, Milton  - milton.balestra@gmail.com
 * @author Cicerchia, Martin - m.f.cicerchia@gmail.com
 * @author Paletto, Pablo 	 - pablo.paletto@gmail.com
 * 
 * 
 * */



public abstract class Persona {
	private String nombre;
	private String apellido;
	private String email;
	private int dni;
	private int codigo; // variable de instancia que se utiliza para asignarle un numero de llegada
	
	Persona(){
		
	}
	
	Persona(String nombre){
		this.nombre = nombre;
	}
	
	Persona(String nombre, String apellido){
		this.nombre=nombre;
		this.apellido=apellido;
		
	}
	Persona(String nombre, String apellido, int codigo){
		this(nombre,apellido);
		this.codigo = codigo;
		
	}
	
	Persona(String nombre, String apellido, String email, int dni){
		this.nombre=nombre;
		this.apellido=apellido;
		this.email=email;
		this.dni=dni;
	}
	
	public String getNombre() {
		return nombre;
	}
	public void setNombre(String nombre) {
		this.nombre = nombre;
	}
	public String getApellido() {
		return apellido;
	}
	public void setApellido(String apellido) {
		this.apellido = apellido;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public int getDni() {
		return dni;
	}
	public void setDni(int dni) {
		this.dni = dni;
	}
	public int getCodigo() {
		return codigo;
	}

	/** Definicion de Metodos Abstractos*/
	public abstract void elegirProductos(Producto[] ranking);
	public abstract void puntuarProductos(int[] codigos, Producto[] ranking);
	
}
